Quick Sort

Picks a pivot element and partitions the array around it, recursively sorting each partition.